Ascend 310 AI处理器上使用AIR模型进行推理 您所在的位置:网站首页 om test Ascend 310 AI处理器上使用AIR模型进行推理

Ascend 310 AI处理器上使用AIR模型进行推理

#Ascend 310 AI处理器上使用AIR模型进行推理 | 来源: 网络整理| 查看: 265

Ascend 310 AI处理器上使用AIR模型进行推理

Linux Ascend 推理应用 初级 中级 高级

查看源文件

概述

Ascend 310是面向边缘场景的高能效高集成度AI处理器。Atlas 200开发者套件又称Atlas 200 Developer Kit(以下简称Atlas 200 DK),是以Atlas 200 AI加速模块为核心的开发者板形态的终端类产品,集成了海思Ascend 310 AI处理器,可以实现图像、视频等多种数据分析与推理计算,可广泛用于智能监控、机器人、无人机、视频服务器等场景。

本教程介绍如何在Atlas 200 DK上使用MindSpore基于AIR模型文件执行推理,主要包括以下流程:

开发环境准备,包括制作Atlas 200 DK的SD卡 、配置Python环境和刷配套开发软件包。

导出AIR模型文件,这里以ResNet-50模型为例。

使用ATC工具将AIR模型文件转成OM模型。

编译推理代码,生成可执行main文件。

加载保存的OM模型,执行推理并查看结果。

你可以在这里找到完整可运行的样例代码:https://gitee.com/mindspore/docs/tree/r1.3/docs/sample_code/acl_resnet50_sample 。

开发环境准备 硬件准备

一个操作系统为Ubuntu的服务器或PC机,用于为Atlas 200 DK制作SD卡启动盘和开发环境部署。

一张SD卡,建议容量不低于16G。

软件包准备

配置开发环境需要的脚本和软件包如下5类,共7个文件。

制卡入口脚本:make_sd_card.py

制作SD卡操作系统脚本:make_ubuntu_sd.sh

Ubuntu操作系统镜像包:ubuntu-18.04.xx-server-arm64.iso

开发者板驱动包与运行包:

Ascend310-driver-*{software version}*-ubuntu18.04.aarch64-minirc.tar.gz

Ascend310-aicpu_kernels-*{software version}*-minirc.tar.gz

Ascend-acllib-*{software version}*-ubuntu18.04.aarch64-minirc.run

安装开发套件包:Ascend-Toolkit-*{version}*-arm64-linux_gcc7.3.0.run

其中,

前3项可以参考Atlas 200 DK 开发者套件使用指南获取。

其余软件包建议从固件与驱动中获取,在该页面中选择产品系列和产品型号为Atlas 200 DK,选中需要的文件,即可下载。

制作SD卡

读卡器通过USB与Ubuntu服务器连接,通过制卡脚本制作SD卡。具体操作参见操作步骤。

连接Atlas 200 DK开发板与Ubuntu服务器

Atlas 200 DK开发者板支持通过USB端口或者网线与Ubuntu服务器进行连接。具体操作参见连接Atlas 200 DK开发者板与Ubuntu服务器。

配置Python环境

安装Python以及gcc等软件,具体操作参见安装依赖。

安装开发套件包

安装开发套件包Ascend-Toolkit-*{version}*-arm64-linux_gcc7.3.0.run,具体操作参见安装开发套件包。

推理目录结构介绍

创建目录放置推理代码工程,例如/home/HwHiAiUser/Ascend/ascend-toolkit/20.0.RC1/acllib_linux.arm64/sample/acl_execute_model/acl_resnet50_sample,其中inc、src、test_data可以从官网示例下载样例代码获取,model目录用于存放接下来导出的AIR模型文件和转换后的OM模型文件,out目录用于存放执行编译生成的可执行文件和输出结果目录,推理代码工程目录结构如下:

└─acl_resnet50_sample ├── inc │ ├── model_process.h //声明资源初始化/销毁相关函数的头文件 │ ├── sample_process.h //声明模型处理相关函数的头文件 │ ├── utils.h //声明公共函数(例如:文件读取函数)的头文件 ├── model │ ├── resnet50_export.air //AIR模型文件 │ ├── resnet50_export.om //转换后的OM模型文件 ├── src │ ├── acl.json //系统初始化的配置文件 │ ├── CMakeLists.txt //编译脚本 │ ├── main.cpp //主函数,图片分类功能的实现文件 │ ├── model_process.cpp //模型处理相关函数的实现文件 │ ├── sample_process.cpp //资源初始化/销毁相关函数的实现文件 │ ├── utils.cpp //公共函数(例如:文件读取函数)的实现文件 ├── test_data │ ├── test_data_1x3x224x224_1.bin //输入样本数据1 │ ├── test_data_1x3x224x224_2.bin //输入样本数据2 ├── out │ ├── main //编译生成的可执行文件 │ ├── result //输出结果目录

输出结果目录acl_resnet50_sample/out/result需先创建好再执行推理操作。

导出AIR模型文件

在Ascend 910的机器上训练好目标网络,并保存为CheckPoint文件,通过网络和CheckPoint文件导出对应的AIR格式模型文件,导出流程参见导出AIR格式文件。

这里提供使用ResNet-50模型导出的示例AIR文件resnet50_export.air。

将AIR模型文件转成OM模型

登录Atlas 200 DK开发者板环境,创建model目录放置AIR文件resnet50_export.air,例如/home/HwHiAiUser/Ascend/ascend-toolkit/20.0.RC1/acllib_linux.arm64/sample/acl_execute_model/acl_resnet50_sample/model,并进入该路径下,设置如下环境变量。其中,install_path需指定为实际安装路径。

export install_path=/home/HwHiAiUser/Ascend/ascend-toolkit/20.0.RC1 export PATH=/usr/local/python3.7.5/bin:${install_path}/atc/ccec_compiler/bin:${install_path}/atc/bin:$PATH export PYTHONPATH=${install_path}/atc/python/site-packages/te:${install_path}/atc/python/site-packages/topi:$PYTHONPATH export LD_LIBRARY_PATH=${install_path}/atc/lib64:$LD_LIBRARY_PATH export ASCEND_OPP_PATH=${install_path}/opp

以resnet50_export.air为例,执行如下命令进行模型转换,在当前目录生成resnet50_export.om文件。

/home/HwHiAiUser/Ascend/ascend-toolkit/20.0.RC1/atc/bin/atc --framework=1 --model=./resnet50_export.air --output=./resnet50_export --input_format=NCHW --soc_version=Ascend310

其中:

--model:原始模型文件的路径。

--output:转换得到的OM模型文件的路径。

--input_format:输入数据格式。

ATC工具详细资料可在昇腾社区开发者文档中选择相应CANN版本后,查找《ATC工具使用指南》章节查看。

编译推理代码

进入工程目录acl_resnet50_sample,设置如下环境变量:

export DDK_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/20.0.RC1 export NPU_HOST_LIB=/home/HwHiAiUser/Ascend/ascend-toolkit/20.0.RC1/acllib_linux.arm64/lib64/stub/

CMakeLists.txt文件中acllib包的include的目录需要指定正确,否则会报acl/acl.h找不到的错误。CMakeLists.txt文件中指定include目录的代码位置如下,如果与实际安装目录不符,需要修改。

... #Header path include_directories( ${INC_PATH}/acllib_linux.arm64/include/ ../ ) ...

执行如下命令创建编译目录:

mkdir -p build/intermediates/minirc

然后切换至编译目录:

cd build/intermediates/minirc

执行cmake命令:

cmake ../../../src -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SKIP_RPATH=TRUE

再执行make命令编译即可。

make

编译完成后,在acl_resnet50_sample/out下会生成可执行main文件。

执行推理并查看结果

将生成的OM模型文件resnet50_export.om拷贝到acl_resnet50_sample/out目录下(和可执行main文件同路径),并确认acl_resnet50_sample/test_data目录中已经准备好输入数据样本,就可以执行推理了。

值得注意的是,需要设置如下环境变量,否则会导致推理不成功。

export LD_LIBRARY_PATH=/home/HwHiAiUser/Ascend/acllib/lib64/

进入到acl_resnet50_sample/out目录下,如果当前目录下result目录不存在,需要执行mkdir result命令创建该目录,然后执行如下命令进行推理。

./main ./resnet50_export.om ../test_data

执行成功后,可以看到推理结果如下,打印了top5的概率标签,并且输出结果会以.bin文件的格式保存在acl_resnet50_sample/out/result目录中。

[INFO] acl init success [INFO] open device 0 success [INFO] create context success [INFO] create stream success [INFO] get run mode success [INFO] load model ./resnet50_export.om success [INFO] create model description success [INFO] create model output success [INFO] start to process file:../test_data/test_data_1x3x224x224_1.bin [INFO] model execute success [INFO] top 1: index[2] value[0.941406] [INFO] top 2: index[3] value[0.291992] [INFO] top 3: index[1] value[0.067139] [INFO] top 4: index[0] value[0.013519] [INFO] top 5: index[4] value[-0.226685] [INFO] output data success [INFO] dump data success [INFO] start to process file:../test_data/test_data_1x3x224x224_2.bin [INFO] model execute success [INFO] top 1: index[2] value[0.946289] [INFO] top 2: index[3] value[0.296143] [INFO] top 3: index[1] value[0.072083] [INFO] top 4: index[0] value[0.014549] [INFO] top 5: index[4] value[-0.225098] [INFO] output data success [INFO] dump data success [INFO] unload model success, modelId is 1 [INFO] execute sample success [INFO] end to destroy stream [INFO] end to destroy context [INFO] end to reset device is 0 [INFO] end to finalize acl


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有